/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.ufsc.aps.convocados;

import com.thoughtworks.xstream.XStream;
import java.io.*;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author gustavo.ramos
 */
public class Baralho implements Serializable {

    public Baralho() {
        initJogadores();
        initEsquemas();
        //Gerar baralho dos jog, esquemas, etc. Sortear e distribuir aleatoriamente para os tecnicos.
    }
    private List<Jogador> jogadoresRestantes;
    private List<EsquemaTatico> esquemasRestantes;

    /**
     * @return the jogadoresRestantes
     */
    public List<Jogador> getJogadoresRestantes() {
        return jogadoresRestantes;
    }

    /**
     * @param jogadoresRestantes the jogadoresRestantes to set
     */
    public void setJogadoresRestantes(List<Jogador> jogadoresRestantes) {
        this.jogadoresRestantes = jogadoresRestantes;
    }

    /**
     * @return the esquemasRestantes
     */
    public List<EsquemaTatico> getEsquemasRestantes() {
        return esquemasRestantes;
    }

    /**
     * @param esquemasRestantes the esquemasRestantes to set
     */
    public void setEsquemasRestantes(List<EsquemaTatico> esquemasRestantes) {
        this.esquemasRestantes = esquemasRestantes;
    }

    private void initJogadores() {
        try {
            File f = new File(System.getProperty("user.dir") + "/resources/jogadores.xml");//endereço do arquivo XML
            FileReader freader = new FileReader(f);
            BufferedReader br = new BufferedReader(freader);
            StringBuilder sb = new StringBuilder();
            String textLine = "";
            while (textLine != null) {    // ler todo arquivo XML            
                sb.append(textLine);
                textLine = br.readLine();
            }
            XStream xs = new XStream();

            jogadoresRestantes = (List<Jogador>) xs.fromXML(sb.toString());//Convertendo o XML em Objeto

            br.close();
            freader.close();
        } catch (FileNotFoundException ex) {
            Logger.getLogger(Baralho.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IOException ex) {
            Logger.getLogger(Baralho.class.getName()).log(Level.SEVERE, null, ex);
        }

    }

    public List<Jogador> sortearJogadoresInicio() {
        List<Jogador> aux = new ArrayList<Jogador>();
        for (int i = 0; i < 6; i++) {
            aux.add(comprarJogador());
        }
        return aux;
    }

    public List<EsquemaTatico> sortearEsquemasInicio() {
        List<EsquemaTatico> aux = new ArrayList<EsquemaTatico>();
        EsquemaTatico et;
        while (aux.size() < 2) {
            et = comprarEsquema();
            while (aux.contains(et)) {
                esquemasRestantes.add(et);
                et = comprarEsquema();
            }
            aux.add(et);
        }
        return aux;
    }

    public Jogador comprarJogador() {
        return jogadoresRestantes.remove(((int) (Math.random() * jogadoresRestantes.size())));
    }

    public EsquemaTatico comprarEsquema() {
        return esquemasRestantes.remove(((int) (Math.random() * esquemasRestantes.size())));
    }

    private void initEsquemas() {
        try {
            File f = new File(System.getProperty("user.dir") + "/resources/esquemas.xml");//endereço do arquivo XML
            FileReader freader = new FileReader(f);
            BufferedReader br = new BufferedReader(freader);
            StringBuilder sb = new StringBuilder();
            String textLine = "";
            while (textLine != null) {    // ler todo arquivo XML            
                sb.append(textLine);
                textLine = br.readLine();
            }
            XStream xs = new XStream();

            esquemasRestantes = (List<EsquemaTatico>) xs.fromXML(sb.toString());//Convertendo o XML em Objeto

            br.close();
            freader.close();
        } catch (FileNotFoundException ex) {
            Logger.getLogger(Baralho.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IOException ex) {
            Logger.getLogger(Baralho.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
}
